{% extends "data_edit.html" %} {% load i18n %} {% block form %} {% autoescape off %} {% for i,k in form.errors.items %} {{i}}{{k}} {% endfor %}
{{ form.SchName|field_as_label_tag }} {{form.SchName.as_widget }} {{form.SchName.errors }} {{ form.timetable_type|field_as_label_tag }} {{form.timetable_type.as_widget }} {{form.timetable_type.errors }}
{{ form.CheckInTime1|field_as_label_tag }} {{form.CheckInTime1.as_widget }} {{form.CheckInTime1.errors }} {{ form.CheckOutTime1|field_as_label_tag }} {{form.CheckOutTime1.as_widget }} {{form.CheckOutTime1.errors }}
{{ form.StartTime|field_as_label_tag }} {{form.StartTime.as_widget }} {{form.StartTime.errors }} {{ form.EndTime|field_as_label_tag }} {{form.EndTime.as_widget }} {{form.EndTime.errors }}
{{ form.CheckInTime2|field_as_label_tag }} {{form.CheckInTime2.as_widget }} {{form.CheckInTime2.errors }} {{ form.CheckOutTime2|field_as_label_tag }} {{form.CheckOutTime2.as_widget }} {{form.CheckOutTime2.errors }}
{% trans '休息时间段' %}:
{% trans '编号' %} {% trans '名称' %} {% trans '开始时间' %} {% trans '结束时间' %} {% trans '休息时长' %} {% trans '计算类型' %} {% trans '相关操作' %}
{% trans '新增' %}
{{ form.CheckIn|field_as_label_tag }} {{form.CheckIn.as_widget }} {{form.CheckIn.errors }} {{ form.CheckOut|field_as_label_tag }} {{form.CheckOut.as_widget }} {{form.CheckOut.errors }}
{{ form.LateMinutes|field_as_label_tag }} {{form.LateMinutes.as_widget }} {{form.LateMinutes.errors }} {{ form.EarlyMinutes|field_as_label_tag }} {{form.EarlyMinutes.as_widget }} {{form.EarlyMinutes.errors }}
{{ form.IsCheckInOverTime|field_as_label_tag }} {{form.IsCheckInOverTime.as_widget }} {{form.IsCheckInOverTime.errors }} {{ form.CheckInOverTime|field_as_label_tag }} {{form.CheckInOverTime.as_widget }} {{form.CheckInOverTime.errors }}
{{ form.IsOverTime|field_as_label_tag }} {{form.IsOverTime.as_widget }} {{form.IsOverTime.errors }} {{ form.OverTime|field_as_label_tag }} {{form.OverTime.as_widget }} {{form.OverTime.errors }}
{{ form.change_at|field_as_label_tag }} {{form.change_at.as_widget }} {{form.change_at.errors }} {{ form.is_day_off|field_as_label_tag }} {{form.is_day_off.as_widget }} {{form.is_day_off.errors }}
{{ form.only_first_last|field_as_label_tag }} {{form.only_first_last.as_widget }} {{form.only_first_last.errors }} {{ form.punch_period_mode|field_as_label_tag }} {{form.punch_period_mode.as_widget }} {{form.punch_period_mode.errors }} {{form.punch_period.as_widget }} {{form.punch_period.errors }}
{{ form.WorkDay|field_as_label_tag }} {{form.WorkDay.as_widget }} {{form.WorkDay.errors }} {{ form.work_time_type|field_as_label_tag }} {{form.work_time_type.as_widget }} {{form.work_time_type.errors }} {{form.shiftworktime.as_widget }} {{form.shiftworktime.errors }}
{{ form.is_support_cross|field_as_label_tag }} {{form.is_support_cross.as_widget }} {{form.is_support_cross.errors }} {{ form.cross_days|field_as_label_tag }} {{form.cross_days.as_widget }} ({% trans '最多 3 天' %}) {{form.cross_days.errors }}
{{ form.is_ot_ft|field_as_label_tag }} {{form.is_ot_ft.as_widget }} {{form.is_ot_ft.errors }} {{ form.min_ot_time|field_as_label_tag }} {{form.min_ot_time.as_widget }} {{form.min_ot_time.errors }}
{{ form.func_key|field_as_label_tag }} {{form.func_key.as_widget }} {{form.func_key.errors }}
{{ form.breaktimes|field_as_label_tag }} {{form.breaktimes.as_widget }} {{form.breaktimes.errors }}
{% endautoescape %} {% endblock %} {% block addjs %} function init_break_table(){ $.ajax({ url: '/att/get_break_time_list/', type: 'GET', dataType: 'json', success: function(callback){ $('#id_break_table tbody').empty(); var schclass_id = $("#id_model_pk").val(); var data_list = callback['ret']; var breaktime = $("#id_breaktimes").val(); var bts = breaktime.split(','); var init_name = []; for(var i=0; i < data_list.length; i++){ var data = data_list[i]; var break_type = ''; if(data["calc_type"] == 0){ break_type = '{% trans 'AutoDecute' %}'; } else{ break_type = '{% trans 'MustPunch' %}'; } var ck= ''; for(var j=0; j < bts.length; j++){ if(bts[j] == data["id"]){ ck = 'checked'; var input = $(''); init_name.push(data["break_name"]); $("#id_edit_form").append(input); } } var edit_id = 'bk' + data["id"]; var row = '' +'' +''+data["break_code"]+'' +''+data["break_name"]+'' +''+data["start_time"]+'' +''+data["end_time"]+'' +''+data["break_time"]+'' +''+break_type+'' +'' +' {% trans '编辑' %}' +' {% trans '删除' %}' +'' +'' $('#id_break_table tbody').append(row); } var refresh_break_time = function(){ var vals = $("#id_break_table").find('input[type=checkbox]'); var name = []; for(var i=0; i < vals.length; i++){ var v = vals[i]; if($(v).attr('checked')){ name.push($(v).attr('name_txt')) } } //console.log(name) $('#selected').val(name.join(',')); $('#selected').attr('data', name.join(',')); $('#selected').attr('title', name.join(',')); }; $("#id_break_table").find('input[type=checkbox]').click(function(){ var data = $(this).val(); var form = $("#id_edit_form"); var input = $(''); if($(this).attr('checked')){ $(form).append(input); }else{ $('input[name=break_times][value='+data+']').remove(); } refresh_break_time(); }); //console.log(init_name) $('#selected').val(init_name.join(',')); $('#selected').attr('data', init_name.join(',')); $('#selected').attr('title', init_name.join(',')); }, error: function(){ } }); }; function pop_break_form(data){ var breakbox = '
' +'' +' ' +' ' +' ' +' ' +' ' +'' +'' +'' +' ' +' ' +' ' +' ' +' ' +'' +'' +'' +' ' +' ' +' ' +' ' +' ' +' ' +'' +'' +'' +' ' +' ' +' ' +'' +'' +'' +'' +'' +'' +'' +'' +'' +'' +'' +'' +'
' +'
' +' ' +' ' +'
{% trans '多次签到签退' %}
{% trans '自动扣除' %}{% trans '必须打卡' %}
{% trans '最少休息时间' %} {% trans '分钟' %}
{% trans '如果提前返回' %} {% trans '分钟, 计为' %} ' +'
{% trans '休息时长超过' %} {% trans '分钟, 计为' %} ' +'
' +'' +'' +'' +'' +'
' +'
'; var obj_id; var success_func = function(layero, index){ var form = $(layero).find("#break_form"); if(data){ obj_id = data["id"]; $('#id_break_code').val(data["break_code"]); $('#id_break_name').val(data["break_name"]); $('#id_start_time').val(data["start_time"]); $('#id_end_time').val(data["end_time"]); $('#id_break_time').val(data["break_time"]); $('#id_bk_func_key').val(data["bk_func_key"]); $('#id_bk_punch_period').val(data["bk_punch_period"]); $('#id_bk_punch_period_mode').val(data["bk_punch_period_mode"]); if(parseInt(data["multiple_punch"]) == 1){ $("#id_multiple_punch").attr('checked', true); } if(parseInt(data["calc_type"]) == 0){ $("#id_auto").attr('checked', true); }else{ $("#id_must_punch").attr('checked', true); $("#id_early_choices").removeAttr('disabled'); $("#id_late_choices").removeAttr('disabled'); $("#id_minimum_time").val(data["minimum_time"]); $("#id_minimum_time").removeAttr('disabled'); if(parseInt(data["is_consider_early"]) == 1){ $("#id_early_choices").attr('checked', true); $("#id_early_over").val(data["early_over"]); $("#id_early_type").val(data["early_type"]); $("#id_early_over").removeAttr('disabled'); $("#id_early_type").removeAttr('disabled'); } if(parseInt(data["is_consider_late"]) == 1){ $("#id_late_choices").attr('checked', true); $("#id_late_over").val(data["late_over"]); $("#id_late_type").val(data["late_type"]); $("#id_late_over").removeAttr('disabled'); $("#id_late_type").removeAttr('disabled'); } } } if($("#id_bk_punch_period_mode").val() == '0'){ $("#id_bk_punch_period").hide(); } $("#id_bk_punch_period_mode").change(function(){ if($("#id_bk_punch_period_mode").val() == '0'){ $("#id_bk_punch_period").hide(); }else if($("#id_bk_punch_period_mode").val() == '1') { $("#id_bk_punch_period").show(); } }) $(form).validate({ rules:{ "break_code":{required:true}, "break_name":{required:true}, "start_time":{required:true}, "end_time":{required:true}, "break_time":{required:true, digits:true,min:0}, "early_over":{digits:true,min:0}, "late_over":{digits:true,min:0}, }, errorPlacement: function(error, element) { error.appendTo(element.parent()); } }); $("#id_must_punch").click(function(){ $("#id_minimum_time").removeAttr('disabled'); $("#id_early_choices").removeAttr('disabled'); $("#id_late_choices").removeAttr('disabled'); }); $("#id_auto").click(function(){ $("#id_minimum_time").attr('disabled', 'disabled'); $("#id_early_choices").attr('disabled', 'disabled'); $("#id_late_choices").attr('disabled', 'disabled'); }) $("#id_early_choices").click(function(){ if($(this).attr('checked')){ $("#id_early_over").removeAttr('disabled'); $("#id_early_type").removeAttr('disabled'); }else{ $("#id_early_over").attr('disabled', 'disabled'); $("#id_early_over").val(0); $("#id_early_type").attr('disabled', 'disabled'); $("#id_early_type").val(0); } }) $("#id_late_choices").click(function(){ if($(this).attr('checked')){ $("#id_late_over").removeAttr('disabled'); $("#id_late_type").removeAttr('disabled'); }else{ $("#id_late_over").attr('disabled', 'disabled'); $("#id_late_over").val(0); $("#id_late_type").attr('disabled', 'disabled'); $("#id_late_type").val(0); } }) render_widgets(form); } var options = { title: gettext("Break Time"), success: success_func, skin: 'action-dialog', scrollbar: true, maxmin: true, zIndex: 100, area: ['auto', 'auto'], btn: [gettext('确定'), gettext('取消')], yes: function(index, layero){ var form = $(layero).find("#break_form"); $("#id_pop_info").html(''); $("#id_is_multiple_punch").val(0); if($("#id_multiple_punch").attr('checked')){ $("#id_is_multiple_punch").val(1); } if($("#id_must_punch").attr('checked')){ $("#id_calc_type").val(1); $("#id_is_consider_early").val(0); if($("#id_early_choices").attr('checked')){ $("#id_is_consider_early").val(1); } $("#id_is_consider_late").val(0); if($("#id_late_choices").attr('checked')){ $("#id_is_consider_late").val(1); } }else{ $("#id_calc_type").val(0); }; if($(form).valid()){ var form_data = form.serialize(); var schclass_id = $("#id_model_pk").val(); var save_url = '/att/save_break_time/?s='+schclass_id; var break_time = parseInt($("#id_break_time").val()); var early_over = parseInt($("#id_early_over").val()); var late_over = parseInt($("#id_late_over").val()); if (early_over > break_time){ $("#id_pop_info").html(''); return false; } var start_time = $("#id_start_time").val(); var end_time = $("#id_end_time").val(); var sts = start_time.split(':'); var ets = end_time.split(':'); var stms = parseInt(ets[0])*60 + parseInt(ets[1]); var etms = parseInt(sts[0])*60 + parseInt(sts[1]); var ds = Math.abs(etms - stms); if (late_over > (ds - break_time) ){ $("#id_pop_info").html(''); return false; } if(obj_id){ save_url = save_url + '&k=' + obj_id; } $.ajax({ url: save_url, type: 'POST', dataType: 'json', data: form_data, success: function(callback){ var ret = callback['ret']; if(ret == 'ok'){ layer.close(index); init_break_table(); }else{ var msg = callback['error']; $("#id_pop_info").html(''); } }, error: function(){ } }); } }, cancel: function(index){ layer.close(index); } } $(breakbox).layerDialog(options); } function edit_breaktime(obj){ var ref = $(obj).attr('ref'); console.log(ref) $.ajax({ url: ref, type: 'GET', dataType: 'json', success: function(callback){ var data = callback["ret"]; if(data.length > 0){ pop_break_form(data[0]); }else{ alert('Object Not Exists'); } }, error: function(){} }); }; function delete_breaktime(obj){ var ref = $(obj).attr('ref'); if(confirm(gettext("确定要删除数据吗?"))){ $.ajax({ url: ref, type: 'POST', dataType: 'json', success: function(callback){ var ret = callback['ret']; if(ret == 'failed'){ var msg = callback['error'] alert(msg); } init_break_table(); }, error: function(){} }); } }; $(function(){ $("#id_SchName").css({width:"250px"}); $("#id_CheckInTime1").attr('readonly', true); $("#id_StartTime").attr('readonly', true); $("#id_CheckInTime2").attr('readonly', true); $("#id_CheckOutTime1").attr('readonly', true); $("#id_EndTime").attr('readonly', true); $("#id_CheckOutTime2").attr('readonly', true); $("#id_change_at").attr('readonly', true); function type_switch(timetable_type){ if(timetable_type == '0'){ $("#id_edit_form input[name=break_times]").attr('disabled', false); $("#tbl_iccard_edit").find("tr[name='flexible']").hide(); $("#tbl_iccard_edit").find("tr[name='normal']").show(); } if(timetable_type == '1'){ $("#id_edit_form input[name=break_times]").attr('disabled', true); $("#tbl_iccard_edit").find("tr[name='normal']").hide(); $("#tbl_iccard_edit").find("tr[name='flexible']").show(); } }; function return_origin_data(timetable_type){ if(timetable_type == '0'){ $("#tbl_iccard_edit tr[name='flexible']").find("input, select").each(function(){ $(this).val($(this).attr('data')); }); } if(timetable_type == '1'){ $("#tbl_iccard_edit tr[name='normal']").find("input, select").each(function(){ $(this).val($(this).attr('data')); }); } }; function set_origin_data(){ $("#tbl_iccard_edit tr[name='normal']").find("input, select").each(function(){ $(this).attr('data', $(this).val()); }); $("#tbl_iccard_edit tr[name='flexible']").find("input, select").each(function(){ $(this).attr('data', $(this).val()); }); }; function interface_init(){ var timetable_type = $("#id_timetable_type").val(); type_switch(timetable_type); var elems = [[$("#id_IsOverTime"), $("#id_OverTime")], [$("#id_IsCheckInOverTime"), $("#id_CheckInOverTime")], [$("#id_is_support_cross"), $("#id_cross_days")], [$("#id_is_ot_ft"), $("#id_min_ot_time")]]; $(elems).each(function(){ var select_elem = this[0]; var input_elem = this[1]; if($(select_elem).val() == '0'){ $(input_elem).attr('readonly', true); } $(select_elem).change(function(){ if($(select_elem).val() == '0'){ $(input_elem).attr('readonly', true); }else if($(select_elem).val() == '1') { $(input_elem).attr('readonly', false); } }) }); if($("#id_punch_period_mode").val() == '0'){ $("#id_punch_period").hide(); } $("#id_punch_period_mode").change(function(){ if($("#id_punch_period_mode").val() == '0'){ $("#id_punch_period").hide(); }else if($("#id_punch_period_mode").val() == '1') { $("#id_punch_period").show(); } }) if($("#id_work_time_type").val() == '1'){ $("#id_shiftworktime").hide(); } $("#id_work_time_type").change(function(){ if($("#id_work_time_type").val() == '1'){ $("#id_shiftworktime").hide(); }else if($("#id_work_time_type").val() == '2') { $("#id_shiftworktime").show(); } }) set_origin_data(); $("#id_timetable_type").change(function(){ var timetable_type = $(this).val(); type_switch(timetable_type); return_origin_data(timetable_type); }); } interface_init(); $("#break_add").click(function(){ pop_break_form(); }); init_break_table(); }); {% endblock %}